package com.hlbspringcloud.mq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * @Author huanglibin
 * @Project mq
 * @Description 工作队列 轮训分发 消息发送者
 * @Date 2020-12-02-16-05-35
 * @Version 1.0
 */
public class WorkSender {
    public static final String QUEUE_NAME = "work query";

    /**
     * 发送消息
     */
    public void sendMessage() throws Exception{
        //1.获取连接
        Connection rabbitmqConnection = RabbitmqUntil.getRabbitmqConnection();

        //2.获取管道
        Channel channel = rabbitmqConnection.createChannel();

        /**
         * 3、队列创建(如果队列存在，则不进行创建)
         * 参数1：队列名
         * 参数2：是否支持持久化，默认队列在内存中，重启会丢失。设置为true,会保存到erlang自带的数据库中
         * 参数3：当连接关闭后是否自动删除队列；是否私有队列，如果私有，其他通道不能访问当前队列
         * 参数4：当没有消费者，是否自动删除队列
         * 参数5：其他参数(通过BasicProperties进行传输)
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);

        //4.发布消息
        for (int i = 0; i < 50; i++) {
            String message = "测试mq工作队列模式"+i;
            channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        }

        //5.关闭连接
        channel.close();
        rabbitmqConnection.close();
    }

    public static void main(String[] args) throws Exception {
        WorkSender workSender = new WorkSender();
        workSender.sendMessage();
    }
}
